import { LOCAL_KEY } from '@/constant/dict';

export default {
    data() {
        return {
            // 是否开启流量限制
            isDataLimit: false,

            // 本月使用的流量
            usedData: 0,

            // 轮询定时器
            dataLimitTimer: null,

            // 轮询时间
            pollingTime: 5000,

            // 是否到达限制条件
            isReachedLimit: false
        };
    },

    methods: {
        async fetchDataLimit() {
            // 获取流量限制开关是否打开
            // const { MODEM_MONTH_DATA_LIMIT_ENABLE } = await this.getDaTA('MODEM_MONTH_DATA_LIMIT_ENABLE');

            // // 流量限制打开
            // if (MODEM_MONTH_DATA_LIMIT_ENABLE == '1') {
            //     const parmArr = [
            //         // 本月流量使用情况
            //         'MODULE_MODEM_MONTHTX',
            //         'MODULE_MODEM_MONTHRX',

            //         // 流量限制
            //         'MODEM_MONTH_DATA_LIMIT_VALUE'
            //     ];

            //     const res = await this.getData(...parmArr);

            //     if (res.MODULE_MODEM_MONTHTX && res.MODULE_MODEM_MONTHRX) {
            //         this.usedData = Number(res.MODULE_MODEM_MONTHTX) + Number(res.MODULE_MODEM_MONTHRX);
            //     }

            //     if (res.MODEM_MONTH_DATA_LIMIT_VALUE) {
            //         this.isReachedLimit = this.usedData >= Number(res.MODEM_MONTH_DATA_LIMIT_VALUE);
            //     }
            // }
        },

        pollingFetchDataLimit() {
            if (!this.isDataLimit) return;

            if (!localStorage.getItem(LOCAL_KEY.IS_AUTH_TOKEN)) {
                this.cleanDataLimitTimer();
                return;
            }

            this.cleanDataLimitTimer();

            this.fetchDataLimit();

            this.dataLimitTimer = setInterval(() => {
                if (this.$store.state.globalTimerStopFlag || !localStorage.getItem(LOCAL_KEY.IS_AUTH_TOKEN)) {
                    this.cleanDataLimitTimer();
                    return;
                }

                this.fetchDataLimit();
            }, this.pollingTime);
        },

        cleanDataLimitTimer() {
            if (this.dataLimitTimer) {
                clearInterval(this.dataLimitTimer);
                this.dataLimitTimer = null;
            }
        }
    }
};
